package com.powernode.storageprocedure;

import com.powernode.commons.util.DbUtils;

import java.lang.reflect.Type;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Types;

/**
 * @Author Arrebol
 * @Date 2024/8/2 20:43
 * @Project jdbc
 * @Description：
 */
public class JdbcTestCallStorageProcedure {
    public static void main(String[] args) {
        Connection conn=null;
        //调用存储过程的数据库操作对象，继承于PreparedStatement
        CallableStatement cs=null;
        try {
            conn= DbUtils.getConnection();
            //调用存储过程的SQL语句
            String callStorageProcedureSql="{call mypro(?,?)}";
            //对以上调用存储过程的SQL语句进行预编译
            cs=conn.prepareCall(callStorageProcedureSql);
            //为占位符转值
            cs.setInt(1,100);
            //将第二个占位符注册为出参，并且出参的数据类型为整数型
            cs.registerOutParameter(2, Types.INTEGER);
            //执行调用存储过程
            cs.execute();
            //获取执行结果，执行结果在出参上，只需要获取出参的值
            int out = cs.getInt(2);
            System.out.println(out);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DbUtils.close(null,cs,conn);
        }

    }
}
